指揮者:コンパイラドライバ
以下のように考えてください コンパイラドライバ (例:GCC) をオーケストラの指揮者に例えることができます。これは、人間が読めるソースコードからバイナリ実行ファイルへの複雑な変換を自動化するものです。この旅路、すなわち 実行への道は コンパイル時 から始まり、 ロード時 そして 実行時まで続きます。
「分離コンパイル」を利用することで、ドライバは 分離コンパイルという仕組みにより、 main.c そして sum.c を独立して処理します。一方のモジュールで変更があっても、プロジェクト全体を再翻訳する必要はありません。変更されたファイルだけが、プリプロセッサ(cpp)、コンパイラ(cc1)、アセンブラ(as)を経由した後、 リンカ (ld)が生成された 再配置可能なオブジェクトファイルまで続きます。
効率性とメモリ階層
リンカが grid[0][0] または src[0][0] のレイアウト決定が直接 スループット そして レイテンシに影響を与えます。データを 32バイトのキャッシュラインに整列させることで、ドライバは Stride-1アクセスパターンを促進し、 コールドミス を最小限に抑え、 列方向スキャンによるエヴィクションを回避します。高度な高性能コードでは、 アンロールドループ並列化($4 \times 4$アンロールドループ) さらに メインメモリからキャッシュへのマッピング 遅延を隠蔽します。クロック周波数サイクルの最適化により(0x32、0x1、0x4、0x51)。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>